package com.exam.api.common.web;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @Author Bcheng
 * @Create 2021/4/13 下午 6:26
 * @Description <p>ServiceStatus</p>
 */
@Getter
@AllArgsConstructor
public enum ResultCode {
    SUCCESS(200, "成功"),
    FAILURE(400, "失败"),

    VERIFICATION_CODE_FAILURE(400, "验证码错误"),
    REPEAT_SEND_SMS_CODE_FAILURE(400, "您已经发送验证码"),
    SEND_SMS_CODE_FAILURE(400, "验证码发送失败。如果已发送多次手机号可能被限制"),
    THE_ACCOUNT_OR_PASSWORD_IS_INCORRECT(400, "账号或者密码错误"),
    NOT_SUPPORT_QUICK_LOGIN_TYPE(400, "不支持的快速登录类型"),
    SUPPORTED_DEVICE_LOGIN(400, "不支持该设备登录"),
    THE_USER_HAS_NO_ROLE(400, "用户未设置角色"),

    THE_THIRD_PARTY_LOGIN_FAILED(400, "第三方登录失败"),
    YOU_VE_ALREADY_GIVEN_FEEDBACK_TODAY(400, "你今天已经反馈了"),
    I_HAVE_CHECKED_IN_TODAY(400, "今日已签到"),

    CLIENT_TOKEN_ERROR(30107, "无效client_token"),

    // 没有修改权限
    NO_PERMISSION(403, "没有修改权限"),

    FORBIDDEN(403, "没有访问权限"),
    UNAUTHORIZED(401, "认证失败"),
    FILE_LONG_ERROR(400, "文件上传过大"),

    PARAMETER_ERROR(400, "参数错误"),
    DATA_NO_EXIST(400, "数据不存在"),
    PARAMETER_TYPE_ERROR(400, "参数类型错误"),
    REQUEST_TYPE_ERROR(400, "请求类型错误"),
    FLOW_EXCEPTION(429, "您操作太快了"),
    BUSY_NETWORK(110, "网络繁忙, 请稍后再试！！"),
    DEPRECATED(300, "接口被弃用，请更换新的接口"),
    ERROR(500, "操作失败, 请稍后再试。"),
    DATA_TRANSFER_ERROR(500, "数据转换失败"),
    NO_ADDRESS(404, "没有这个地址"),

    PAGE_NONE(600, "微页面不存在"),
    ARTICLE_NONE(700, "文章不存在"),
    // 该联系方式已存在
    TEL_EXIST(10001, "该联系方式已存在"),
    // 商家不能是服务人员
    DAK_BUSINESS_NOT_SERVICE_PERSONAL(1002, "商家不能是服务人员"),

    // 存在关联
    E100(100, "存在关联数据，无法删除"),

    /**
     * 文件上传
     */
    E7000(7000, "获取临时上传访问权限失败"),

    /**
     * < E1000 >E1999 用户相关
     */
    ERROR_TEL(1009, "手机号格式错误"),
    E1000(1000, "用户不存在"),
    E1001(1001, "当前用户被停用"),
    E1001T(1001, "当前用户被停用，请联系客服了解"),
    E1002(1002, "二维码失效"),
    E1003(1003, "二维码错误"),
    E1004(1004, "二维码登录未授权确认"),
    E1005(1005, "用户不存在或者密码错误"),
    E1006(1006, "旧密码错误"),
    E1007(1007, "需要使用手机号登录"),
    E1008(1008, "已经是推销员了！"),

    E900(900, "商品不存在"),
    E901(901, "商品库存不足"),
    E902(902, "商品未到售卖时间"),
    E907(907, "订单非法操作"),
    E911(911, "无法找到该下单商品"),
    E912(912, "已评论"),


    /**
     * < E2000 >E2999 积分相关
     */
    E2001(2001, "积分未开通"),
    E2002(2502, "积分交易失败"),
    E2003(2503, "积分不足"),

    /**
     * < E3000 >E3999 订单相关
     */
    E3000(3000, "订单不存在"),
    E3001(3001, "不支持的订单类型"),
    E3002(3002, "商品库存不足"),
    E3003(3003, "兑换失败"),
    E3004(3004, "收货地址不存在"),
    E3005(3005, "0元无需支付"),
    E3006(3006, "暂无物流信息"),
    REFUND_STATUS_ERROR(6201, "状态不正确"),
    REFUND_TIMEOUT_ERROR(6202, "已经超时，无法操作"),
    REFUND_6203(6203, "当前不是新申请，无法同意申请"),
    REFUND_6204(6204, "当前不是新申请，无法拒绝申请"),
    REFUND_6205(6205, "商家未同意"),
    REFUND_6206(6206, "必须在商家已经发货的情况下才能收货"),
    REFUND_6207(6207, "买家未填写物流信息"),
    REFUND_6208(6208, "不是已经确认线上退款完成，无法处理微信回调"),
    REFUND_6209(6209, "只有在待收货、已收货才可以退款"),
    REFUND_6210(6210, "只有在已收货才能退换货"),
    REFUND_6211(6211, "如果商家已经介入，则无法撤销，需要和商家协商处理"),
    REFUND_6212(6212, "商家未同意或者买家未填写物流信息"),
    REFUND_6213(6213, "只有在交易完成才可以发起售后"),
    REFUND_6214(6214, "无法重复申请售后"),

    /**
     * < E4000 >E4999 优惠券相关
     */
    E4000(4000, "优惠券不可以用"),

    E9000(9000,"用户信息不完整"),

    /**
     * 计划相关
     */
    // 计划不存在
    PLAN_NONE(5000, "计划不存在"),

    ;

    private final Integer code;

    private final String message;

    public final boolean equals(ResultCode other) {
        return this.getCode().equals(other.getCode());
    }
}
